/**
 * 获取当前年月日
 */
export function getDate() {
	var date = new Date();
	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var day = date.getDate();
	if (month < 10) {
	    month = "0" + month;
	}
	if (day < 10) {
	    day = "0" + day;
	}
	return year + "-" + month + "-" + day;
}

/**
 * 将字符串按照指定长度截取
 * @param {String} string 
 * @param {Number} graphNum 
 * @returns {Array}
 */
export function stringSplit(string, graphNum) {
    let index = 0,
        str_new = '',
        arr = [];
    for (let i = 0; i < string.length; i++) {
        // 判断中文字符字节+3
        if (string[i].match(/^[\u4E00-\u9FA5]{1,}$/)) {
            index += 3;
        } else {
            index += 1;
        }

        str_new += string[i];

        if (index >= (graphNum - 1)) {
            arr.push(str_new);
            str_new = '';
            index = 0;
        }
    }
    arr.push(str_new);

    return arr
}

// 节流函数
// 思路： 第一次先设定一个变量true，
// 第二次执行这个函数时，会判断变量是否true，
// 是则返回。当第一次的定时器执行完函数最后会设定变量为flase。
// 那么下次判断变量时则为flase，函数会依次运行。
export function throttle(fn, delay = 100) {
  // 首先设定一个变量，在没有执行我们的定时器时为null
  var timer = null
  return function() {
    // 当我们发现这个定时器存在时，则表示定时器已经在运行中，需要返回
    if (timer) return
    timer = setTimeout(() => {
      fn.apply(this, arguments)
      timer = null
    }, delay)
  }
}

// 防抖函数
// 首次运行时把定时器赋值给一个变量， 第二次执行时，
// 如果间隔没超过定时器设定的时间则会清除掉定时器，
// 重新设定定时器， 依次反复， 当我们停止下来时，
// 没有执行清除定时器， 超过一定时间后触发回调函数。
// 参考文档：https://segmentfault.com/q/1010000021145192
export function debounce(fn, delay) {
  let timer
  return function() {
    const that = this
    const _args = arguments // 存一下传入的参数
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(function() {
      fn.apply(that, _args)
    }, delay)
  }
}

export  function GetPercent(num, total) {
    /// 求百分比
    /// <param name="num">当前数</param>
    /// <param name="total">总数</param>
    num = parseFloat(num);
    total = parseFloat(total);
    if (isNaN(num) || isNaN(total)) {
        return "-";
    }
    return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00) + '%';
}
